import axios from "axios";
import router from "./router";
import ElementUI from "element-ui";

const request = axios.create({
    timeout: 5000,
    headers: {
        'Content-Type': "application/json;charset=utf-8"
    }
});

request.interceptors.request.use(config => {
    const token = localStorage.getItem("token");
    if (token) {
        config.headers['Authorization'] = token;
    }
    return config;
});

request.interceptors.response.use(response => {
    const res = response.data;
    if (res.code === 200) {
        return response;
    } else {
        // 应该在组件内部处理错误消息
        ElementUI.Message.error(!res.msg ? '系统异常' : res.msg);
        return Promise.reject(new Error(!res.msg ? '系统异常' : res.msg));
    }
}, error => {
    if (error.response) {
        // 服务器返回了错误的状态码
        error.message = error.response.data.msg || '请求失败';
        if (error.response.status === 401) {
            router.push("/login");
        }
    } else if (error.request) {
        // 请求已发出，但没有收到响应
        error.message = '请求已发出，但没有收到响应';
    } else {
        // 发生了触发请求错误的问题
        error.message = error.message || '请求配置错误';
    }

    // 应该在组件内部处理错误消息
    ElementUI.Message.error(error.message || '请求失败，请稍后重试', {duration:3000});
    return Promise.reject(error);
});

export default request;